﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TheBullysStore.Models.ModuloAdministracion.Edificio;
using System.Configuration;
using System.Data.SqlClient;
using TheBullysStore.Models.ModuloAdministracion.Departamento;
using log4net;
using TheBullysStore.Models.ModuloAdministracion.Usuario;
using TheBullysStore.Controllers.ModuloServicio;

namespace TheBullysStore.Models.ModuloServicios.EstadoCuenta
{
    public class EstadoCuentaDAO
    {
        private static ILog log = LogManager.GetLogger(typeof(EstadoCuentaDAO));
        public List<EdificioBean> ListarEdificio(EdificioBean edificio)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<EdificioBean> listaedificio = new List<EdificioBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "SELECT Nombre, Id_Edificio FROM Edificio WHERE estado = 1";

                System.Diagnostics.Debug.WriteLine("---------->" + edificio.Contometro);

                if (edificio.IdDepartamento > 0)
                {
                    commandString += " AND Id_Departamento = " + edificio.IdDepartamento + "";
                }
                if (edificio.IdProvincia > 0)
                {
                    commandString += " AND Id_Provincia = " + edificio.IdProvincia + "";
                }
                if (edificio.IdDistrito > 0)
                {
                    commandString += " AND Id_Distrito = " + edificio.IdDistrito + "";
                }
                
                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    EdificioBean Edificio = new EdificioBean();
                    Edificio.IdEdificio = Convert.ToInt32(dataReader["Id_Edificio"]);
                    Edificio.Nombre = Convert.ToString(dataReader["Nombre"]);
                    listaedificio.Add(Edificio);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaedificio;
            }
            catch (Exception ex)
            {
                log.Error("ListarEdificio(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<DepartamentoBean> ListarDepartamentos(DepartamentoBean departamento)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<DepartamentoBean> listaDepartamento = new List<DepartamentoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "SELECT d.numero, d.id_departamento FROM departamento d WHERE d.estado = 1 and d.id_Edificio = " + departamento.IdEdificio + " and d.numero_piso = '"+ departamento.NumeroPiso +"'";
                

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    DepartamentoBean Departamento = new DepartamentoBean();
                    Departamento.Numero = Convert.ToInt32(dataReader[0]);
                    Departamento.IdDepartamento = Convert.ToInt32(dataReader[1]);
                    listaDepartamento.Add(Departamento);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaDepartamento;
            }
            catch (Exception ex)
            {
                log.Error("ListarDepartamentos(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<EstadoCuentaBean> ListarPropietarios(EstadoCuentaBean estadoCuenta)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<EstadoCuentaBean> listaPropietarios = new List<EstadoCuentaBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "select e.id_Edificio, e.Nombre, d.id_departamento, d.numero_piso, d.Numero, p.Nombres, p.apellidos, dl.Nombre, prov.Nombre, dist.Nombre " +
                                       "from edificio e, departamento d, persona p, departamento_lugar dl, provincia prov, distrito dist, habitante h " +
                                       "where e.estado = 1 and d.estado = 1 and d.id_Edificio = e.id_Edificio and p.id_edificio = e.id_Edificio "+
                                       "and e.id_departamento = dl.id_departamento and e.id_distrito = dist.id_distrito and e.id_provincia = prov.id_provincia "+
                                       "and h.id_persona = p.id_persona and h.id_departamento = d.id_departamento and h.es_propietario = 1";

                if (estadoCuenta.IdDepartamentoLugar > 0)
                {
                    commandString += " AND dl.id_departamento =" + estadoCuenta.IdDepartamentoLugar + " ";
                }

                if (estadoCuenta.IdProvincia > 0)
                {
                    commandString += " AND prov.id_provincia =" + estadoCuenta.IdProvincia + " ";
                }

                if (estadoCuenta.IdDistrito > 0)
                {
                    commandString += " AND dist.id_distrito =" + estadoCuenta.IdDistrito + " ";
                }

                if (estadoCuenta.IdEdificio > 0)
                {
                    commandString += " AND e.id_Edificio =" + estadoCuenta.IdEdificio + " ";
                }

                if (!string.IsNullOrEmpty(estadoCuenta.Piso))
                {
                    commandString += " AND d.numero_piso = '" + estadoCuenta.Piso+ "' ";
                }

                if (estadoCuenta.IdDepartamento > 0)
                {
                    commandString += " AND d.id_departamento =" + estadoCuenta.IdDepartamento + " ";
                }


                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    EstadoCuentaBean estCuenta = new EstadoCuentaBean();
                    estCuenta.IdEdificio = Convert.ToInt32(dataReader[0]);
                    estCuenta.NombreEdificio = Convert.ToString(dataReader[1]);
                    estCuenta.IdDepartamento = Convert.ToInt32(dataReader[2]);
                    estCuenta.Piso = Convert.ToString(dataReader[3]);
                    estCuenta.NumeroDepartamento = Convert.ToInt32(dataReader[4]);
                    estCuenta.NombrePersona = Convert.ToString(dataReader[5]);
                    estCuenta.ApellidosPersona = Convert.ToString(dataReader[6]);
                    estCuenta.NombreDepartamento = Convert.ToString(dataReader[7]);
                    estCuenta.NombreProvincia = Convert.ToString(dataReader[8]);
                    estCuenta.NombreDistrito = Convert.ToString(dataReader[9]);
                    listaPropietarios.Add(estCuenta);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaPropietarios;
            }
            catch (Exception ex)
            {
                log.Error("ListarPropietarios(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<EstadoCuentaBean> ListarEstadoCuentaA(EstadoCuentaBean estadoCuenta)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<EstadoCuentaBean> listaPropietarios = new List<EstadoCuentaBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                //estado lo confirma el administrador
                //estado 0: anulado
                //estado 1: pendiente de pago
                //estado 2: pagado

                //Estado_Voucher es para el propietario
                string commandString = "select * from cuenta_por_cobrar where estado = 2 and id_departamento = " + estadoCuenta.IdDepartamento;

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    EstadoCuentaBean estCuenta = new EstadoCuentaBean();
                    estCuenta.IdCuenta = Convert.ToInt32(dataReader[0]);
                    if (Convert.IsDBNull(dataReader[1]))
                    {
                        estCuenta.Monto = 0;
                    }
                    else estCuenta.Monto = Convert.ToDouble(dataReader[1]);
                    estCuenta.Estado = Convert.ToInt32(dataReader[2]);
                    if (Convert.IsDBNull(dataReader[3]))
                    {
                        estCuenta.Voucher = "";
                    }
                    else estCuenta.Voucher = Convert.ToString(dataReader[3]);
                    if (Convert.IsDBNull(dataReader[4]))
                    {
                        estCuenta.EstadoVoucher = 0;
                    } else estCuenta.EstadoVoucher = Convert.ToInt32(dataReader[4]);
                    estCuenta.IdDepartamento = Convert.ToInt32(dataReader[5]);
                    if (Convert.IsDBNull(dataReader[5]))
                    {
                        estCuenta.TipoCuota = "";
                    }
                    else estCuenta.TipoCuota = Convert.ToString(dataReader[6]);
                    estCuenta.Anho = Convert.ToInt32(dataReader[7]);
                    estCuenta.Mes = Convert.ToInt32(dataReader[8]);
                    if (Convert.IsDBNull(dataReader[9])) {
                        estCuenta.MontoMensual = 0;
                    }else estCuenta.MontoMensual = Convert.ToDouble(dataReader[9]);
                    listaPropietarios.Add(estCuenta);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaPropietarios;
            }
            catch (Exception ex)
            {
                log.Error("ListarEstadoCuentaA(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<EstadoCuentaBean> ListarHistorialPagosA(EstadoCuentaBean estadoCuenta)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<EstadoCuentaBean> listaPropietarios = new List<EstadoCuentaBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                //estado lo confirma el administrador
                //estado 0: anulado
                //estado 1: creado
                //estado 2: pendiente de pago
                //estado 3: pagado

                //Estado_Voucher es para el propietario
                string commandString = "select * from cuenta_por_cobrar where estado = 3 and id_departamento = " + estadoCuenta.IdDepartamento;

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    EstadoCuentaBean estCuenta = new EstadoCuentaBean();
                    estCuenta.IdCuenta = Convert.ToInt32(dataReader[0]);
                    if (Convert.IsDBNull(dataReader[1]))
                    {
                        estCuenta.Monto = 0;
                    }
                    else estCuenta.Monto = Convert.ToDouble(dataReader[1]);
                    estCuenta.Estado = Convert.ToInt32(dataReader[2]);
                    if (Convert.IsDBNull(dataReader[3]))
                    {
                        estCuenta.Voucher = "";
                    }
                    else estCuenta.Voucher = Convert.ToString(dataReader[3]);
                    if (Convert.IsDBNull(dataReader[4]))
                    {
                        estCuenta.EstadoVoucher = 0;
                    }
                    else estCuenta.EstadoVoucher = Convert.ToInt32(dataReader[4]);
                    estCuenta.IdDepartamento = Convert.ToInt32(dataReader[5]);
                    if (Convert.IsDBNull(dataReader[5]))
                    {
                        estCuenta.TipoCuota = "";
                    }
                    else estCuenta.TipoCuota = Convert.ToString(dataReader[6]);
                    estCuenta.Anho = Convert.ToInt32(dataReader[7]);
                    estCuenta.Mes = Convert.ToInt32(dataReader[8]);
                    if (Convert.IsDBNull(dataReader[9]))
                    {
                        estCuenta.MontoMensual = 0;
                    }
                    else estCuenta.MontoMensual = Convert.ToDouble(dataReader[9]);
                    listaPropietarios.Add(estCuenta);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaPropietarios;
            }
            catch (Exception ex)
            {
                log.Error("ListarHistorialPagosA(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<EstadoCuentaBean> ListarEstadoCuentaP(EstadoCuentaBean estadoCuenta)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<EstadoCuentaBean> listaPropietarios = new List<EstadoCuentaBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                //estado lo confirma el administrador
                //estado 0: anulado
                //estado 1: pendiente de pago
                //estado 2: pagado

                //Estado_Voucher es para el propietario
                string commandString = "select cxc.Id_Cuenta, cxc.monto, cxc.Estado, cxc.Voucher, cxc.Estado_Voucher, cxc.id_departamento, cxc.tipo_cuota, cxc.Anio, cxc.Mes, cxc.monto_mensual " +
                                        "from cuenta_por_cobrar cxc, persona p, habitante h " +
                                        "where cxc.estado = 2 AND p.id_persona = h.id_persona AND h.id_departamento = cxc.id_departamento and p.usuario = '" + estadoCuenta.Username + "'";

                if (!string.IsNullOrEmpty(estadoCuenta.FechaInicio))
                {
                    //commandString += " and cxc.Fecha_inicial >= convert(datetime,'" + estadoCuenta.FechaInicio + "',103) ";
                    string [] fecha = estadoCuenta.FechaInicio.Split('/');
                    commandString += " AND cxc.Mes >= " + fecha[1] + " AND cxc.Anio >= " + fecha[2];
                }

                if (!string.IsNullOrEmpty(estadoCuenta.FechaFin))
                {
                    //commandString += " and cxc.Fecha_final <= convert(datetime,'" + estadoCuenta.FechaFin + "',103) ";
                    string[] fecha = estadoCuenta.FechaFin.Split('/');
                    commandString += " AND cxc.Mes <= " + fecha[1] + " AND cxc.Anio <= " + fecha[2];
                }

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    EstadoCuentaBean estCuenta = new EstadoCuentaBean();
                    estCuenta.IdCuenta = Convert.ToInt32(dataReader[0]);
                    if (Convert.IsDBNull(dataReader[1]))
                    {
                        estCuenta.Monto = 0;
                    }
                    else estCuenta.Monto = Convert.ToDouble(dataReader[1]);
                    estCuenta.Estado = Convert.ToInt32(dataReader[2]);
                    if (Convert.IsDBNull(dataReader[3]))
                    {
                        estCuenta.Voucher = "";
                    }
                    else estCuenta.Voucher = Convert.ToString(dataReader[3]);
                    if (Convert.IsDBNull(dataReader[4]))
                    {
                        estCuenta.EstadoVoucher = 0;
                    }
                    else estCuenta.EstadoVoucher = Convert.ToInt32(dataReader[4]);
                    estCuenta.IdDepartamento = Convert.ToInt32(dataReader[5]);
                    if (Convert.IsDBNull(dataReader[5]))
                    {
                        estCuenta.TipoCuota = "";
                    }
                    else estCuenta.TipoCuota = Convert.ToString(dataReader[6]);
                    estCuenta.Anho = Convert.ToInt32(dataReader[7]);
                    estCuenta.Mes = Convert.ToInt32(dataReader[8]);
                    if (Convert.IsDBNull(dataReader[9]))
                    {
                        estCuenta.MontoMensual = 0;
                    }
                    else estCuenta.MontoMensual = Convert.ToDouble(dataReader[9]);
                    listaPropietarios.Add(estCuenta);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaPropietarios;
            }
            catch (Exception ex)
            {
                log.Error("listaPropietarios(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<EstadoCuentaBean> ListarHistorialPagosP(EstadoCuentaBean estadoCuenta)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<EstadoCuentaBean> listaPropietarios = new List<EstadoCuentaBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                //estado lo confirma el administrador
                //estado 0: anulado
                //estado 1: pendiente de pago
                //estado 2: pagado

                //Estado_Voucher es para el propietario
                string commandString = "select cxc.Id_Cuenta, cxc.monto, cxc.Estado, cxc.Voucher, cxc.Estado_Voucher, cxc.id_departamento, cxc.tipo_cuota, cxc.Anio, cxc.Mes, cxc.monto_mensual " +
                                        "from cuenta_por_cobrar cxc, persona p, habitante h " +
                                        "where cxc.estado = 3 AND p.id_persona = h.id_persona AND h.id_departamento = cxc.id_departamento and p.usuario = '" + estadoCuenta.Username + "'";

                if (!string.IsNullOrEmpty(estadoCuenta.FechaInicio))
                {
                    //commandString += " and cxc.Fecha_inicial >= convert(datetime,'" + estadoCuenta.FechaInicio + "',103) ";
                    string[] fecha = estadoCuenta.FechaInicio.Split('/');
                    commandString += " AND cxc.Mes >= " + fecha[1] + " AND cxc.Anio >= " + fecha[2];
                }

                if (!string.IsNullOrEmpty(estadoCuenta.FechaFin))
                {
                    //commandString += " and cxc.Fecha_final <= convert(datetime,'" + estadoCuenta.FechaFin + "',103) ";
                    string[] fecha = estadoCuenta.FechaFin.Split('/');
                    commandString += " AND cxc.Mes >= " + fecha[1] + " AND cxc.Anio >= " + fecha[2];
                }

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    EstadoCuentaBean estCuenta = new EstadoCuentaBean();
                    estCuenta.IdCuenta = Convert.ToInt32(dataReader[0]);
                    if (Convert.IsDBNull(dataReader[1]))
                    {
                        estCuenta.Monto = 0;
                    }
                    else estCuenta.Monto = Convert.ToDouble(dataReader[1]);
                    estCuenta.Estado = Convert.ToInt32(dataReader[2]);
                    if (Convert.IsDBNull(dataReader[3]))
                    {
                        estCuenta.Voucher = "";
                    }
                    else estCuenta.Voucher = Convert.ToString(dataReader[3]);
                    if (Convert.IsDBNull(dataReader[4]))
                    {
                        estCuenta.EstadoVoucher = 0;
                    }
                    else estCuenta.EstadoVoucher = Convert.ToInt32(dataReader[4]);
                    estCuenta.IdDepartamento = Convert.ToInt32(dataReader[5]);
                    if (Convert.IsDBNull(dataReader[5]))
                    {
                        estCuenta.TipoCuota = "";
                    }
                    else estCuenta.TipoCuota = Convert.ToString(dataReader[6]);
                    estCuenta.Anho = Convert.ToInt32(dataReader[7]);
                    estCuenta.Mes = Convert.ToInt32(dataReader[8]);
                    if (Convert.IsDBNull(dataReader[9]))
                    {
                        estCuenta.MontoMensual = 0;
                    }
                    else estCuenta.MontoMensual = Convert.ToDouble(dataReader[9]);
                    listaPropietarios.Add(estCuenta);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaPropietarios;
            }
            catch (Exception ex)
            {
                log.Error("modificarMantenimiento(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<UsuarioBean> buscarDatos(UsuarioBean persona)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<UsuarioBean> datos = new List<UsuarioBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                string commandString = "select d.id_departamento, p.nombres, p.apellidos from persona p, departamento d, habitante h " +
                                       "where p.id_persona =" + persona.IdPersona +" and h.id_persona = p.id_persona and h.id_departamento = d.id_departamento";

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    UsuarioBean personaDatos = new UsuarioBean();
                    personaDatos.IdDepartamento = Convert.ToInt32(dataReader[0]);
                    personaDatos.Nombre = Convert.ToString(dataReader[1]);
                    personaDatos.Apellidos = Convert.ToString(dataReader[2]);
                    datos.Add(personaDatos);
                }
                dataReader.Close();
                sqlCon.Close();

                return datos;
            }
            catch (Exception ex)
            {
                log.Error("buscarDatos(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }


        public static string Subir(List<Upload.FilesStatus> statuses)
        {
            SqlConnection sqlCon = null;
            try
            {
                //"(convert(datetime,'" + mantenimientoPreventivo.Fecha + "',103), '"
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);
                DateTime fecha = DateTime.Today;
                string fecha1 = fecha.ToString("dd/MM/yyyy"); 
                
                for (int i = 0; i < statuses.Count(); i++)
                {
                    sqlCon.Open();
                    string commandString = "INSERT INTO Comprobante_Deposito(Fecha, nombre, idDepartamento, estado)" +
                                           "VALUES (convert(datetime,'" + fecha1 + "',103), '" + statuses[i].name + "'," + statuses[i].IdDepartamento + ", 2)";

                    SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    sqlCon.Close();
                }
                return "Bien";

            }

            catch (Exception ex)
            {
                log.Error("Subir(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public static string Borrar(string filePath)
        {
            SqlConnection sqlCon = null;
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "UPDATE Comprobante_Deposito SET " +
                                       "estado = 0 WHERE nombre = '" + filePath + "'";

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                sqlCmd.ExecuteNonQuery();

                sqlCon.Close();

                return "Bien";

            }
            catch (Exception ex)
            {
                log.Error("Borrar(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<EstadoCuentaBean> buscarVC(EstadoCuentaBean estadoCuenta)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<EstadoCuentaBean> datos = new List<EstadoCuentaBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                string commandString =  "SELECT nombre, idComprobante " +
                                        "FROM Comprobante_Deposito " +
                                        "WHERE estado = 2 AND idDepartamento = " + estadoCuenta.IdDepartamento;

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    EstadoCuentaBean estadoCuentaDatos = new EstadoCuentaBean();
                    estadoCuentaDatos.NombreComprobante = Convert.ToString(dataReader[0]);
                    estadoCuentaDatos.IdComprobante = Convert.ToInt32(dataReader[1]);
                    datos.Add(estadoCuentaDatos);
                }
                dataReader.Close();
                sqlCon.Close();

                return datos;
            }
            catch (Exception ex)
            {
                log.Error("buscarVC(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<EstadoCuentaBean> confirmarPagoCV(EstadoCuentaBean estadoCuenta)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<EstadoCuentaBean> datos = new List<EstadoCuentaBean>();
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString =  "UPDATE cuenta_por_cobrar SET Estado_Voucher = 2 " +
                                        "WHERE id_departamento =" + estadoCuenta.IdDepartamento + " AND mes = " + DateTime.Now.Month + " AND anio = " + DateTime.Now.Year;

                commandString += ";  UPDATE Comprobante_Deposito SET estado = 3 " +
                                 "WHERE idComprobante = " + estadoCuenta.IdComprobante;

                commandString += "; UPDATE cuota_extraordinaria_x_departamento SET Estado = 3 WHERE id_departamento = "+estadoCuenta.IdDepartamento+
                    " AND mes = " + DateTime.Now.Month+" AND anio ="+DateTime.Now.Year+")";
                commandString += "; UPDATE cuota SET estado = 3 WHERE id_departamento = "+estadoCuenta.IdDepartamento+" AND mes = "+DateTime.Now.Month+" AND anio = "+DateTime.Now.Year+")";
                commandString += "; UPDATE Consumo_De_Agua SET Estado = 3 WHERE id_departamento = " + estadoCuenta.IdDepartamento + " AND mes = " + DateTime.Now.Month + " AND anio = " + DateTime.Now.Year + ")";

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                sqlCmd.ExecuteNonQuery();

                sqlCon.Close();
                EstadoCuentaBean estadoCuentaDatos = new EstadoCuentaBean();
                estadoCuentaDatos.Conexion = "Bien";
                datos.Add(estadoCuentaDatos);
                return datos;
            }
            catch (Exception ex)
            {
                log.Error("modificarMantenimiento(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
            
        }
    }
}